home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-098 < prev    next >
Text File  |  1995-12-31  |  43KB  |  1,094 lines

  1. C.S.M.P. Digest             Fri, 19 May 95       Volume 3 : Issue 98
  2.  
  3. Today's Topics:
  4.  
  5.         Announce: Apple Guide Mailing List
  6.         BOA Stacks between 2k and 24k
  7.         Can large disk caches _really_ reduce performance _significantly?_
  8.         Font Names: GX versus QD
  9.         How do I determine whether 'x' is an OSTrap or a ToolTrap?
  10.         Macintosh Port of STL available
  11.         QuickDraw GX programming on the WWWeb
  12.         [Ann] TCP++.Lib 1.0 released to macgifts
  13.         help: making PICT header for JFIF format file
  14.         lists in dialogs?
  15.  
  16.  
  17.  
  18. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  19. (pottier@clipper.ens.fr).
  20.  
  21. The digest is a collection of article threads from the internet newsgroups
  22. comp.sys.mac.programmer.help, csmp.tools and csmp.misc. It is designed for
  23. people who read news semi-regularly and want an archive of the discussions.
  24. If you don't know what a newsgroup is, you probably don't have access to
  25. it. Ask your systems administrator(s) for details. If you don't have access
  26. to news, you may still be able to post messages to the group by using a
  27. mail server like anon.penet.fi (mail help@anon.penet.fi for more
  28. information).
  29.  
  30. Each issue of the digest contains one or more sets of articles (called
  31. threads), with each set corresponding to a 'discussion' of a particular
  32. subject.  The articles are not edited; all articles included in this digest
  33. are in their original posted form (as received by our news server at
  34. nef.ens.fr).  Article threads are not added to the digest until the last
  35. article added to the thread is at least two weeks old (this is to ensure that
  36. the thread is dead before adding it to the digest).  Article threads that
  37. consist of only one message are generally not included in the digest.
  38.  
  39. The digest is officially distributed by two means, by email and ftp.
  40.  
  41. If you want to receive the digest by mail, send email to listserv@ens.fr
  42. with no subject and one of the following commands as body:
  43.     help                                Sends you a summary of commands
  44.     subscribe csmp-digest Your Name     Adds you to the mailing list
  45.     signoff csmp-digest                 Removes you from the list
  46. Once you have subscribed, you will automatically receive each new
  47. issue as it is created.
  48.  
  49. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  50. Questions related to the ftp site should be directed to
  51. scott.silver@dartmouth.edu.
  52.  
  53. -------------------------------------------------------
  54.  
  55. >From quinn@cs.uwa.edu.au (Quinn "The Eskimo!")
  56. Subject: Announce: Apple Guide Mailing List
  57. Date: Fri, 28 Apr 1995 21:06:07 +0800
  58. Organization: Department of Computer Science, University of Western Australia
  59.  
  60. [I apologise if you see this twice but I have a sneaking suspicion I stuffed
  61.  up the first posting.]
  62.  
  63. Greetings
  64.  
  65. It is my pleasure to announce the availablity of a mailing list for the
  66. discussion of issues related to creating Apple Guide guide files.  At the
  67. moment, I'm the only person on the list.  I asked "If I build it, will you
  68. come?"  I hope so (-:  Thanks to Peter N Lewis for hosting the list.
  69.  
  70. How To Subscribe
  71. - --------------
  72. You can subscribe to the list by sending mail to...
  73.  
  74.   listserv@list.peter.com.au
  75.  
  76. ... with the following in the body of the message...
  77.  
  78.   subscribe apple-guide Your Real Name
  79.  
  80. The message's subject is ignored.
  81.  
  82. How To Post
  83. - ---------
  84. You must be subscribed to send messages to the list.  Once you get your
  85. subscription confirmation, you can send messages to the list by sending
  86. them to...
  87.  
  88.   apple-guide@list.peter.com.au
  89.  
  90. Messages are not echoed back to you.
  91.  
  92. Share and Enjoy.
  93. --
  94. Quinn "The Eskimo!"    Pez:      "What's with all the happy sounds?"
  95.                        Giggywig: "They're giddy with fear."
  96.  
  97. ---------------------------
  98.  
  99. >From dcourtn@opie.bgsu.edu (Des Courtney)
  100. Subject: BOA Stacks between 2k and 24k
  101. Date: Thu, 27 Apr 1995 14:18:49 -0500
  102. Organization: Flair Diversions
  103.  
  104. I'm interested in creating a BOA that runs in a tight memory space, but
  105.   I'm concerned that the default 2k is not enough for my needs.  However,
  106.   I've read that trying to adjust the stack smaller than 24k automatically
  107.   makes the stack 24k.  I'm using Think Pascal 4.0.2, so if there are
  108.   additional problems with BOA design under this environment, let me know.
  109.  
  110. Des Courtney
  111.  
  112. -- 
  113. Flair Diversions is... Des Courtney, writer of cool Mac software
  114.          Outpost Nexus, Ambiance, Icons for MICN, etc.
  115.   mailto:dcourtn@opie.bgsu.edu  http://nether.net/~dcourtn/www
  116.                Obligatory ASCII graphic --> (-;
  117.  
  118. +++++++++++++++++++++++++++
  119.  
  120. >From BrianS@pbcomputing.com (Brian Stern)
  121. Date: Thu, 27 Apr 1995 23:51:13 -0500
  122. Organization: The University of Texas at Austin, Austin, Texas
  123.  
  124. In article <dcourtn-2704951418490001@m248-33.bgsu.edu>,
  125. dcourtn@opie.bgsu.edu (Des Courtney) wrote:
  126.  
  127. < I'm interested in creating a BOA that runs in a tight memory space, but
  128. <   I'm concerned that the default 2k is not enough for my needs.  However,
  129. <   I've read that trying to adjust the stack smaller than 24k automatically
  130. <   makes the stack 24k.  I'm using Think Pascal 4.0.2, so if there are
  131. <   additional problems with BOA design under this environment, let me know.
  132. < Des Courtney
  133. < -- 
  134. < Flair Diversions is... Des Courtney, writer of cool Mac software
  135. <          Outpost Nexus, Ambiance, Icons for MICN, etc.
  136. <   mailto:dcourtn@opie.bgsu.edu  http://nether.net/~dcourtn/www
  137. <                Obligatory ASCII graphic --> (-;
  138.  
  139. It is possible to set the stack to any arbitrary size.  Here is some C
  140. code that I've used for that purpose, where stackSize is the size of stack
  141. you want in bytes:
  142.  
  143.       // It's not possible to set the stack to be smaller than
  144.       // DfltStack.  So we adjust it first, set the 
  145.       // stacksize and then restore it.
  146.       long  saveDefaultStack = LMGetMinStack();
  147.       LMSetMinStack( stackSize );
  148.  
  149.       // Increase the stack size by lowering the heap limit.
  150.       SetApplLimit( (Ptr) ( (unsigned long) GetApplLimit() - stackSize ) );
  151.       LMSetMinStack( saveDefaultStack );
  152.  
  153. ____________________________________________________________________
  154. Brian  Stern  {:-{)}                          BrianS@pbcomputing.com
  155. Toolbox commando and Menu bard.             Will FlushCache for Cash
  156.  
  157. +++++++++++++++++++++++++++
  158.  
  159. >From peter@mail.peter.com.au (Peter N Lewis)
  160. Date: Thu, 04 May 1995 13:09:39 +0800
  161. Organization: Curtin University
  162.  
  163. In article <BrianS-2704952351130001@slip-11-4.ots.utexas.edu>,
  164. BrianS@pbcomputing.com (Brian Stern) wrote:
  165.  
  166. >It is possible to set the stack to any arbitrary size.  Here is some C
  167. >code that I've used for that purpose, where stackSize is the size of stack
  168. >you want in bytes:
  169.  
  170. While this is true, I strongly recomend you don't do this.  I've done this
  171. myself, and after a while I got sick of the complaints that my app was
  172. crashing because the user had installed some new system extension that
  173. wanted some more stack space.  Unfortunately, under System 7, there is no
  174. way to keep other people off your stack or out of your heap, and any
  175. number of inits will invalidate all your assumptions about stack space.
  176.    Peter.
  177. -- 
  178. I will be in the USA during May so any Email will probably not be 
  179. dealt with until the start of June unless it's urgent.
  180.  
  181. +++++++++++++++++++++++++++
  182.  
  183. >From dcourtn@opie.bgsu.edu (Des Courtney)
  184. Date: Thu, 04 May 1995 11:33:09 -0500
  185. Organization: Flair Diversions
  186.  
  187. In article <peter-0405951309390001@rocky.curtin.edu.au>,
  188. peter@mail.peter.com.au (Peter N Lewis) wrote:
  189.  
  190. ) While this is true, I strongly recomend you don't do this.  I've done this
  191. ) myself, and after a while I got sick of the complaints that my app was
  192. ) crashing because the user had installed some new system extension that
  193. ) wanted some more stack space.  Unfortunately, under System 7, there is no
  194. ) way to keep other people off your stack or out of your heap, and any
  195. ) number of inits will invalidate all your assumptions about stack space.
  196. )    Peter.
  197.  
  198. Okay, then what is the *effective* minimum size a BOA's stack and heap can
  199.   be?  Right now, my foreground version of Ambiance uses 24k stack and
  200.   24k heap.  I want to know if I can save any memory by going back-only.
  201.   (All interface will be done via a pref file and a separate config
  202.   application or control panel.)
  203.  
  204. E-mail me a response; I will be off the 'Net for the summer this weekend.
  205.  
  206. Des Courtney
  207.  
  208. -- 
  209. Flair Diversions is... Des Courtney, writer of cool Mac software
  210.          Outpost Nexus, Ambiance, Icons for MICN, etc.
  211.   mailto:dcourtn@opie.bgsu.edu  http://nether.net/~dcourtn/www
  212.                Obligatory ASCII graphic --> (-;
  213.  
  214. ---------------------------
  215.  
  216. >From dpbsmith@world.std.com (Daniel P. B. Smith)
  217. Subject: Can large disk caches _really_ reduce performance _significantly?_
  218. Date: Sat, 15 Apr 1995 23:17:25 GMT
  219. Organization: The World Public Access UNIX, Brookline, MA
  220.  
  221. Obviously, setting the disk cache too large may not be the optimum thing
  222. to do because a) the performance improvement may hit a law of diminishing
  223. returns; b) you have to take the RAM _away_ from something else, and maybe
  224. the something else would benefit performance more; c) in _theory_, there
  225. could be a very _slight_ performance hit from having to "search a large
  226. cache."  Setting aside a) and b), is there any truth to c?  It seems to
  227. me that even if you have, say, a 2 meg cache, storing 2K blocks,
  228. you'd have a sector table with 1K entries, and "searching" the table--
  229. even by with a linear search--would take, jeez, I dunno, maybe 50 
  230. microseconds?  Adding 50 microseconds per sector to a system that was
  231. reading at 2 meg/sec = 1000 blocks/second = 1000 microseconds per clock
  232. would only be a 5% speed reduction.
  233.  
  234. There is a sort of "urban legend" in my company that says "the Mac disk
  235. cache is terrible and will hurt performance terribly if you make it bigger
  236. than 128K."  Someone produced a technical note from AppleLink in which
  237. the querent wanted to know why an Excel file that saved in 40 seconds on
  238. his Mac IIfx was taking over 2 minutes on his Mac Quadra (800, I think, 
  239. running 7.1).  The respondent, from Apple, asserted that it was because
  240. his disk cache, at 512K, was too big, and that was causing it.
  241.  
  242. I've done some experiment of my own (all on PowerMacs with System 7.5) that
  243. don't seem to bear this out, at all.  I'm not even sure I see _any_ effect
  244. on raw read/write speeds of sequential files, whereas there are certain
  245. situations where the disk thrashes a bit with a small cache and, as
  246. you expect, quiets down and speeds up noticably with a big one.
  247.  
  248. How about it--has anyone seen _serious_ performance penalties from using
  249. too large a disk cache (that were NOT attributable to starving an app
  250. for RAM)?  Suppose you had a Mac with a 128K cache, and a 10 meg RAM disk,
  251. and 64 meg of RAM total.  Does anybody believe that changing it to a 1 meg
  252. cache and a 9 meg RAM disk would really reduce disk performance 
  253. significantly, and, if so, why?  (Again, I don't mean 5% slower, I mean
  254. something taking 2 minutes instead of 40 seconds.)
  255.  
  256. The real reason I want to know is that, for other reasons, I want to
  257. recommend using a largish cache size (512K to 1 meg) for our customers
  258. (who typically use Macs with 64K to 96K of RAM in them).  I've been
  259. testing with a PowerMac 8100/80 running 7.5 and I'm convinced this 
  260. recommendation _is_ OK on _this_ system.  _If_ the truth is that it
  261. is OK on this system, but for some reason really _is_ bad (I mean
  262. 2 minutes versus 40 seconds bad) on some other system, I'd like to know
  263. about it.
  264.  
  265. Anyone have any real information on how the cache works and whether 
  266. there's anything unexpected about its caching algorithm?
  267.  
  268. -- 
  269. Daniel P. B. Smith
  270. dpbsmith@world.std.com
  271.  
  272. +++++++++++++++++++++++++++
  273.  
  274. >From joseph@joebloe.maple-shade.nj.us (Joseph "Moof-in'" Hall)
  275. Date: Sun, 16 Apr 95 17:58:08 MST
  276. Organization: 5 Sigma Software
  277.  
  278.  
  279. In article <D73nD1.2Fw@world.std.com> (comp.sys.mac.programmer.misc), dpbsmith@world.std.com (Daniel P. B. Smith) writes:
  280. ) [...] The respondent, from Apple, asserted that it was because
  281. ) his disk cache, at 512K, was too big, and that was causing it.
  282. ) I've done some experiment of my own (all on PowerMacs with System 7.5) that
  283. ) don't seem to bear this out, at all.  
  284.  
  285. That's because the 7.5 cache actually works well.
  286.  
  287. =============== O Fortuna, velut Luna, statu variabilis ===============
  288. uunet!joebloe!joseph   (602) 732-2549 day   joseph%joebloe@uunet.uu.net
  289. 1400 N Alma School                #163               Chandler, AZ 85224
  290. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  291.            Be hip!  Support comp.sys.mac.programmer.moof!
  292.  
  293. +++++++++++++++++++++++++++
  294.  
  295. >From skevill@tartarus.uwa.edu.au (Scott Kevill)
  296. Date: 18 Apr 1995 10:45:17 GMT
  297. Organization: The University of Western Australia
  298.  
  299. Daniel P. B. Smith (dpbsmith@world.std.com) wrote:
  300. [snip]
  301.  
  302. : The real reason I want to know is that, for other reasons, I want to
  303. : recommend using a largish cache size (512K to 1 meg) for our customers
  304. : (who typically use Macs with 64K to 96K of RAM in them).  I've been
  305.                                ^^^    ^^^
  306. : testing with a PowerMac 8100/80 running 7.5 and I'm convinced this 
  307. : recommendation _is_ OK on _this_ system.  _If_ the truth is that it
  308. : is OK on this system, but for some reason really _is_ bad (I mean
  309. : 2 minutes versus 40 seconds bad) on some other system, I'd like to know
  310. : about it.
  311. [snip]
  312. : -- 
  313. : Daniel P. B. Smith
  314. : dpbsmith@world.std.com
  315.  
  316. Hehe, personally I wouldn't recommend a 512K disk cache on a machine with 
  317. 64K of RAM, but I don't know, maybe its just me.... ;-)
  318.  
  319. Scott Kevill.
  320. skevill@tartarus.uwa.edu.au
  321.  
  322.  
  323. +++++++++++++++++++++++++++
  324.  
  325. >From jumplong@aol.com (Jump Long)
  326. Date: 19 Apr 1995 03:07:14 -0400
  327. Organization: America Online, Inc. (1-800-827-6364)
  328.  
  329. >Obviously, setting the disk cache too large may not be the optimum thing
  330. >to do because a) the performance improvement may hit a law of diminishing
  331. >returns; b) you have to take the RAM _away_ from something else, and
  332. maybe
  333. >the something else would benefit performance more; c) in _theory_, there
  334. >could be a very _slight_ performance hit from having to "search a large
  335. >cache."  Setting aside a) and b), is there any truth to c?  It seems to
  336. >me that even if you have, say, a 2 meg cache, storing 2K blocks,
  337. >you'd have a sector table with 1K entries, and "searching" the table--
  338. >even by with a linear search--would take, jeez, I dunno, maybe 50 
  339. >microseconds?  Adding 50 microseconds per sector to a system that was
  340. >reading at 2 meg/sec = 1000 blocks/second = 1000 microseconds per clock
  341. >would only be a 5% speed reduction.
  342. >
  343. >There is a sort of "urban legend" in my company that says "the Mac disk
  344. >cache is terrible and will hurt performance terribly if you make it
  345. bigger
  346. >than 128K."  Someone produced a technical note from AppleLink in which
  347. >the querent wanted to know why an Excel file that saved in 40 seconds on
  348. >his Mac IIfx was taking over 2 minutes on his Mac Quadra (800, I think, 
  349. >running 7.1).  The respondent, from Apple, asserted that it was because
  350. >his disk cache, at 512K, was too big, and that was causing it.
  351. >
  352. >I've done some experiment of my own (all on PowerMacs with System 7.5)
  353. that
  354. >don't seem to bear this out, at all.  I'm not even sure I see _any_
  355. effect
  356. >on raw read/write speeds of sequential files, whereas there are certain
  357. >situations where the disk thrashes a bit with a small cache and, as
  358. >you expect, quiets down and speeds up noticably with a big one.
  359. >
  360. >How about it--has anyone seen _serious_ performance penalties from using
  361. >too large a disk cache (that were NOT attributable to starving an app
  362. >for RAM)?  Suppose you had a Mac with a 128K cache, and a 10 meg RAM
  363. disk,
  364. >and 64 meg of RAM total.  Does anybody believe that changing it to a 1
  365. meg
  366. >cache and a 9 meg RAM disk would really reduce disk performance 
  367. >significantly, and, if so, why?  (Again, I don't mean 5% slower, I mean
  368. >something taking 2 minutes instead of 40 seconds.)
  369. >
  370. >The real reason I want to know is that, for other reasons, I want to
  371. >recommend using a largish cache size (512K to 1 meg) for our customers
  372. >(who typically use Macs with 64K to 96K of RAM in them).  I've been
  373. >testing with a PowerMac 8100/80 running 7.5 and I'm convinced this 
  374. >recommendation _is_ OK on _this_ system.  _If_ the truth is that it
  375. >is OK on this system, but for some reason really _is_ bad (I mean
  376. >2 minutes versus 40 seconds bad) on some other system, I'd like to know
  377. >about it.
  378. >
  379. >Anyone have any real information on how the cache works and whether 
  380. >there's anything unexpected about its caching algorithm?
  381.  
  382. Ah... where do I start. There have been three major releases of the File
  383. Manager's disk cache since HFS was released: the pre-System 7 cache, the
  384. System 7.0 through 7.1.2 cache, and the System 7.5 cache.
  385.  
  386. I haven't spent a lot of time looking at what exactly changed between
  387. System 6 and System 7.0, but the 2 major changes in performance were:
  388.  
  389. 1) Cached multiple block reads are made directly into the user's buffer
  390. and then moved into the cache. The pre-7.0 cache used to read single
  391. blocks into the cache from disk (really slow) and then copy them into the
  392. user's buffer.
  393.  
  394. 2) When a file is closed, cache blocks associated with that file are moved
  395. into a "free queue". If the file is reopened and the same blocks are read
  396. again, they are retrieved from the free queue (if they haven't been
  397. reused) which is searched using a hash mechanism.
  398.  
  399. System 7.5 changed several other things which cause performance problems.
  400. Again, I haven't looked at every little change, but the major changes
  401. were:
  402.  
  403. 1) RAM disks aren't cached. A disk is determined to be a RAM disk if it
  404. returns $10 in the LS-byte of the information returned by a csCode 23
  405. (Return Drive Info) Control call to the disk driver (see the Tech Note
  406. "What Your Sony Drives For You for a description of the Return Drive Info
  407. Control call). (And yes, I know that's not documented *yet*). RAM disk
  408. volumes are marked by the HFS file system with a bit in vcbAtrb (I can't
  409. remember which - it's easy to see).
  410.  
  411. 2) All BlockMoves were changed to BlockMoveData.
  412.  
  413. 3) When dirty cache blocks are flushed, the dirty cache blocks that are
  414. contiguous on disk are moved to a temporary buffer and then written. This
  415. results in fewer and larger write operations (which is much faster).
  416.  
  417. 4) Cached multiple block reads used to flush all of the file's dirty
  418. blocks to the disk before reading (to make sure no stale data would be
  419. read from disk). Now, the read into the buffer is made first and then the
  420. cache is searched for dirty blocks associated with the file. Dirty blocks
  421. are then copied over the data read with BlockMoveData. This is a big speed
  422. increase since only one I/O operation (the read) is made.
  423.  
  424. So, that should be enough to help your figure out why the File Manager
  425. cache sucked in some cases before System 7.5.
  426.  
  427. If everyone would pay a little more attention to what they cached or
  428. didn't cache, and would pay attention to how they performed their I/O
  429. operations, things could be even faster on the Macintosh. See the newly
  430. revised Technical Note "FL 16 - File Manager Performance and Caching"
  431. (just uploaded to DTS's Web page) for more information.
  432.  
  433. - Jim Luther
  434.  
  435. +++++++++++++++++++++++++++
  436.  
  437. >From cmice@mke.ab.com (Christopher Ice x2136)
  438. Date: 19 Apr 1995 12:46:25 GMT
  439. Organization: Allen-Bradley Co.
  440.  
  441. Joseph "Moof-in'" Hall (joseph@joebloe.maple-shade.nj.us) wrote:
  442.  
  443. :>In article <D73nD1.2Fw@world.std.com> (comp.sys.mac.programmer.misc), dpbsmith@world.std.com (Daniel P. B. Smith) writes:
  444. :>) [...] The respondent, from Apple, asserted that it was because
  445. :>) his disk cache, at 512K, was too big, and that was causing it.
  446. :>) 
  447. :>) I've done some experiment of my own (all on PowerMacs with System 7.5) that
  448. :>) don't seem to bear this out, at all.  
  449.  
  450. My understanding is that, *before sys 7.5*, the caching algorithm used for
  451. cacheing was poor and inefficient.  Large cache sizes meant the cpu spent more
  452. time fiddling with the 1.5M cache you've created rather than just fetching
  453. from disk.
  454.  
  455. *I believe* that Sys7.5 has improved algorithms that help alleviate this
  456. problem, but again...there's a point of diminishing returns on cache size.
  457. You'll just have to experiment to see what works best for a particular
  458. machine/drive combo.
  459.  
  460. Chris
  461. --
  462.                                   --------
  463.   +------------------------------| _   /| |------------------------------+ 
  464.   | Chris Ice, Software Engineer | \`o_O' | Allen-Bradley Company        | 
  465.   | E-mail: CMIce@mke.AB.com     |   ( )  | 1201 S. Second St.           | 
  466.   | Voice:  414.382.2136         |    U   | Milwaukee, WI 53204 USA      |
  467.   +------------------------------|  Ack!  |------------------------------+
  468.       My opinions do not reflect  --------  the views of my employer.
  469.  
  470. +++++++++++++++++++++++++++
  471.  
  472. >From jens_alfke@powertalk.apple.com (Jens Alfke)
  473. Date: Tue, 25 Apr 1995 14:25:43 GMT
  474. Organization: Apple Computer, Inc.
  475.  
  476. In article <D73nD1.2Fw@world.std.com>, dpbsmith@world.std.com (Daniel P.
  477. B. Smith) wrote:
  478.  
  479. > Anyone have any real information on how the cache works and whether 
  480. > there's anything unexpected about its caching algorithm?
  481.  
  482. Others have answered this but I can add a few things --
  483.  
  484. * Pre-7.5 the disk cache would flush one block at a time. This made
  485. flushing very, very slow. The disk cache was rewritten from scratch for
  486. 7.5 and it shows. Large caches now work very well.
  487.  
  488. * There are special flags your code can use to indicate to the File
  489. Manager that data it's writing should not be stored in the cache. This is
  490. good to use for file copies or other times when you know what you're
  491. writing will not necessarily be read again soon.
  492.  
  493. * There's a brand new Tech Note (available by WWW from www.info.apple.com)
  494. that describes various techniques to speed up file I/O, including how to
  495. use the aforementioned caching bits.
  496.  
  497.  
  498. Jens Alfke_________OpenDoc Geometer_________jens_alfke@powertalk.apple.com
  499.                                            OpenDoc info: FTP to CILabs.org
  500.  
  501.          Visit Scenic Flood Control Dam No. 3.      
  502.  
  503. ---------------------------
  504.  
  505. >From swire@ycc.kodak.com (Alan Jay Swire)
  506. Subject: Font Names: GX versus QD
  507. Date: Thu, 27 Apr 1995 13:20:30 -0400
  508. Organization: Eastman Kodak
  509.  
  510. How does one translate between the font names that one can obtain through
  511. Quickdraw, and font names in QuickdrawGX? All our fonts have been
  512. translated by the Type 1 Enabler into GX format, but using QD names for
  513. the font will not find the GX names for the font. An example, "ACaslon
  514. Italic" is the name for one of our fonts obtained through QD, but the GX
  515. name for the font obtained through GXFindFontName() is "Adobe Caslon
  516. Italic". I have been searching through the GX manuals for a conversion of
  517. the Font Number obtained through GetFNum() into something useful for GX,
  518. but I have been unsuccessful. Any ideas?
  519.  
  520. Alan
  521.  
  522. +++++++++++++++++++++++++++
  523.  
  524. >From opstad@apple.com (David Opstad)
  525. Date: 27 Apr 1995 15:33:40 -0700
  526. Organization: Apple Computer Inc, Cupertino, CA
  527.  
  528. In article <swire-2704951320300001@swire.ycc.kodak.com>,
  529. Alan Jay Swire <swire@ycc.kodak.com> wrote:
  530. >How does one translate between the font names that one can obtain through
  531. >Quickdraw, and font names in QuickdrawGX? All our fonts have been
  532. >translated by the Type 1 Enabler into GX format, but using QD names for
  533. >the font will not find the GX names for the font. An example, "ACaslon
  534. >Italic" is the name for one of our fonts obtained through QD, but the GX
  535. >name for the font obtained through GXFindFontName() is "Adobe Caslon
  536. >Italic". I have been searching through the GX manuals for a conversion of
  537. >the Font Number obtained through GetFNum() into something useful for GX,
  538. >but I have been unsuccessful. Any ideas?
  539. >
  540. >Alan
  541.  
  542. Quickdraw font names come from the resources, while GX font names come
  543. from the 'name' table in the 'sfnt'. To go from GX's name space to
  544. Quickdraw's, you can use the FontToQD function (in the font menu library
  545. that comes with GX on the developer CDs) to convert a gxFont into a
  546. FOND ID. Once you have that ID, GetFName or equivalent can get you the
  547. Quickdraw name. To go the other direction, you can use the GXNewFont
  548. call with the resourceFontStorage type to make a gxFont from a given
  549. sfnt in a FOND, and then once you have the gxFont you can call
  550. GXFindFontName to find the appropriate name.
  551.  
  552. Dave Opstad
  553. GX Line Layout Weenie
  554.  
  555.  
  556. ---------------------------
  557.  
  558. >From reinder@neuretp.biol.ruu.nl (Reinder Verlinde)
  559. Subject: How do I determine whether 'x' is an OSTrap or a ToolTrap?
  560. Date: Thu, 27 Apr 1995 13:04:33 GMT
  561. Organization: Rijksuniversiteit Utrecht
  562.  
  563.  
  564. While converting some old code to the universal headers, with
  565.  
  566.    #define OLDROUTINENAMES 0
  567.  
  568. I encountered code which patches ExitToShell (to ensure that some
  569. cleanup code is executed). This brings me to the question: what
  570. does one pass to NGetTrapAddress and NSetTrapAddress??
  571. The prototypes state:
  572.  
  573. extern pascal UniversalProcPtr NGetTrapAddress(
  574.                                     short trapNum, TrapType tTyp);
  575.  
  576. extern pascal void NSetTrapAddress(
  577.             UniversalProcPtr trapAddr, short trapNum, TrapType tTyp);
  578.  
  579. For the trapNum parameter, I have seen source which uses 0xA9F4, code
  580. which uses 0x01A4, and I think that I have even seen code which uses
  581. 0x00A4. The code in question used 0xA9F4, and I think that that is
  582. what I have used whenever I patched traps, so I stuck with that.
  583.  
  584. For tTyp, the big question is: do I pass OSTrap or ToolTrap?
  585.  
  586. According to both the phonebook (IM I, II, and III in a single binder)
  587. and IM IV we have:
  588.  
  589.   "Bit 11 of the trap word determines how the remainder of the word will
  590.    be interpreted; usually it's 0 for Operating System calls and 1 for
  591.    Toolbox calls, though there are certain exceptions"
  592.  
  593. So, unless ExitToShell is an exception, it is a Toolbox Trap. However, my
  594. gut feeling is that it is an Operating System Trap, and the code seems
  595. to work when I use OSTrap.
  596.  
  597. Problem is, I can't find the list of exceptions. Reading on about the question:
  598.  
  599.     "How do you determine whether a trap is a ToolTrap or an OSTrap???"
  600.  
  601. I began to wonder why GetTrapAddress was ever replaced by NGetTrapAddress.
  602. If everybody simply passes the entire trap word (0xA9F4 for ExitToShell)
  603. the TrapType parameter is not needed. The only reason for the NGet/NSet
  604. pair I can see is that older programs may have passed less information
  605. (0x1A4 for ExitToShell)
  606.  
  607. The original question remains a mystery to me, however. Things I can
  608. come up with are:
  609.  
  610.   - don't bother, just pass the entire trap word (e.g. 0xA9F4),
  611.     GetTrapAddress and SetTrapAddress are smart enough to figure out what
  612.     you mean in that case. The whole distinction between OS and toolbox
  613.     traps is just a formality.
  614.  
  615.   - just use the rule 'bit 11 set <=> toolbox trap'
  616.  
  617.   - Toolbox traps use Pascal calling conventions, OS Traps use registers.
  618.     This would not help for ExitToShell, since its prototype is
  619.  
  620.           pascal void ExitToShell( void);
  621.  
  622.   - OSTraps are discussed in OS Chapters, Tool Traps in Toolbox chapters
  623.     of IM (of course that begs the question: what is a OS Chapter, what a
  624.     Toolbox chapter)
  625.  
  626. If anybody can shed light on this I would be grateful.
  627.  
  628. Reinder Verlinde
  629.  
  630. PS: Excuse me if this post turns up twice. I have reason to believe that
  631.     my first posting was not received by my newshost, but I may be wrong.
  632.  
  633. +++++++++++++++++++++++++++
  634.  
  635. >From BrianS@pbcomputing.com (Brian Stern)
  636. Date: Thu, 27 Apr 1995 13:11:19 -0500
  637. Organization: The University of Texas at Austin, Austin, Texas
  638.  
  639. In article <reinder-2704951504330001@neuretf.biol.ruu.nl>,
  640. reinder@neuretp.biol.ruu.nl (Reinder Verlinde) wrote:
  641.  
  642. < While converting some old code to the universal headers, with
  643. <    #define OLDROUTINENAMES 0
  644. < I encountered code which patches ExitToShell (to ensure that some
  645. < cleanup code is executed). This brings me to the question: what
  646. < does one pass to NGetTrapAddress and NSetTrapAddress??
  647. < The prototypes state:
  648. < extern pascal UniversalProcPtr NGetTrapAddress(
  649. <                                     short trapNum, TrapType tTyp);
  650. < extern pascal void NSetTrapAddress(
  651. <             UniversalProcPtr trapAddr, short trapNum, TrapType tTyp);
  652.  
  653. I never use NGet/NSet.  I always use GetTool/SetTool/GetOS/SetOS.  If you
  654. disassemble code written using NGet you'll see that it has more overhead.
  655. I always pass the defines for a particular trap that are found in
  656. Traps.h.  Something like this:
  657.  
  658.    mExitToShellUPP = ::GetToolTrapAddress( _ExitToShell );
  659.    mExitToShellPatchUPP = 
  660.       NewRoutineDescriptor( (ProcPtr) ExitToShellPatch, kPascalStackBased,
  661. GetCurrentISA() );
  662.    ::SetToolTrapAddress( mExitToShellPatchUPP, _ExitToShell );
  663.  
  664. < For the trapNum parameter, I have seen source which uses 0xA9F4, code
  665. < which uses 0x01A4, and I think that I have even seen code which uses
  666. < 0x00A4. The code in question used 0xA9F4, and I think that that is
  667. < what I have used whenever I patched traps, so I stuck with that.
  668. < For tTyp, the big question is: do I pass OSTrap or ToolTrap?
  669. < According to both the phonebook (IM I, II, and III in a single binder)
  670. < and IM IV we have:
  671. <   "Bit 11 of the trap word determines how the remainder of the word will
  672. <    be interpreted; usually it's 0 for Operating System calls and 1 for
  673. <    Toolbox calls, though there are certain exceptions"
  674. < So, unless ExitToShell is an exception, it is a Toolbox Trap. However, my
  675. < gut feeling is that it is an Operating System Trap, and the code seems
  676. < to work when I use OSTrap.
  677.  
  678. Yes it's a tooltrap.
  679.  
  680. < Problem is, I can't find the list of exceptions. Reading on about the
  681. question:
  682. <     "How do you determine whether a trap is a ToolTrap or an OSTrap???"
  683. < I began to wonder why GetTrapAddress was ever replaced by NGetTrapAddress.
  684. < If everybody simply passes the entire trap word (0xA9F4 for ExitToShell)
  685. < the TrapType parameter is not needed. The only reason for the NGet/NSet
  686. < pair I can see is that older programs may have passed less information
  687. < (0x1A4 for ExitToShell)
  688. < The original question remains a mystery to me, however. Things I can
  689. < come up with are:
  690. <   - don't bother, just pass the entire trap word (e.g. 0xA9F4),
  691. <     GetTrapAddress and SetTrapAddress are smart enough to figure out what
  692. <     you mean in that case. The whole distinction between OS and toolbox
  693. <     traps is just a formality.
  694.  
  695. Not true.  There are really two trap tables and if you pass the wrong
  696. traptype your patch won't get called.
  697.  
  698. <   - just use the rule 'bit 11 set <=> toolbox trap'
  699.  
  700. This works.
  701.  
  702. <   - Toolbox traps use Pascal calling conventions, OS Traps use registers.
  703. <     This would not help for ExitToShell, since its prototype is
  704. <           pascal void ExitToShell( void);
  705.  
  706. True.  Traps from Memory Manager, File Manager, and Device Manager for
  707. example, use register-based calling conventions and are OSTraps (mostly).
  708.  
  709. <   - OSTraps are discussed in OS Chapters, Tool Traps in Toolbox chapters
  710. <     of IM (of course that begs the question: what is a OS Chapter, what a
  711. <     Toolbox chapter)
  712. < If anybody can shed light on this I would be grateful.
  713.  
  714. I sometimes, um, well, do this by trial and error.  If you pass the wrong
  715. traptype then your patch isn't called.  If the patch isn't called then I
  716. change the traptype.  Simple as that.
  717.  
  718. < Reinder Verlinde
  719. < PS: Excuse me if this post turns up twice. I have reason to believe that
  720. <     my first posting was not received by my newshost, but I may be wrong.
  721.  
  722. Good luck,
  723.  
  724. ____________________________________________________________________
  725. Brian  Stern  {:-{)}                          BrianS@pbcomputing.com
  726. Toolbox commando and Menu bard.             Will FlushCache for Cash
  727.  
  728. +++++++++++++++++++++++++++
  729.  
  730. >From pottier@chaland.ens.fr (Francois Pottier)
  731. Date: 28 Apr 1995 16:27:37 GMT
  732. Organization: Ecole Normale Superieure, Paris
  733.  
  734. In article <reinder-2704951504330001@neuretf.biol.ruu.nl>,
  735. Reinder Verlinde <reinder@neuretp.biol.ruu.nl> wrote:
  736.  
  737. >    "How do you determine whether a trap is a ToolTrap or an OSTrap???"
  738. >
  739. >  - just use the rule 'bit 11 set <=> toolbox trap'
  740.  
  741. As far as I know, this rule is correct. Of course, as you noted, that leads
  742. us to ask why the System doesn't determine this itself instead of asking us
  743. to call SetToolTrapAddress or SetOSTrapAddress accordingly. Maybe a leftover
  744. from the old days?
  745.  
  746. -- 
  747. Francois Pottier                                            pottier@dmi.ens.fr
  748. - ----------------------------------------------------------------------------
  749. Check my WWW page at http://acacia.ens.fr:8080/home/pottier/ ...
  750.  
  751. ---------------------------
  752.  
  753. >From tree@bedford.symantec.com (Tom Emerson)
  754. Subject: Macintosh Port of STL available
  755. Date: Fri, 05 May 1995 10:51:49 -0400
  756. Organization: Symantec Development Tools Group
  757.  
  758. The Symantec Macintosh Development Tools Group would like to announce the
  759. availability of a Macintosh ported version of the Standard Template
  760. Library (STL) which includes a demonstration created by ObjectSpace and
  761. available on the HP ftp server.
  762.  
  763. This version will work properly with our 8.0.1 compilers which were
  764. released yesterday and are available on the Symantec DTS ftp server,
  765.  
  766. <ftp://devtools.symantec.com/macintosh/updaters/devtools/sym.cpp-va-tcl.updates/sym-spm-801-update.hqx>
  767.  
  768. We will continue maintain the STL archive.
  769.         
  770. About the STL and demo
  771. - --------------------
  772. This archive contains an update to the Standard Template Library and A new
  773. demo of the STL that was posted to the HP ftp site. It requires that your
  774. compilers be updated to 8.0.1 before it can be used. If you have not
  775. already obtained this updater from our online services, please do so.
  776.  
  777. NOTE: The STL and examples provided will not work correctly without the
  778. 8.0.1 compiler update.
  779.     
  780. Getting the STL and demo
  781. - ----------------------
  782. The contents of the STL and demo can be found at the following URL:
  783.  
  784. <ftp://ftp.bedford.symantec.com/pub/stl/STL_and_demo.hqx>
  785.  
  786. Questions regarding our Development Tools can be sent to
  787.  
  788. <mailto:support@devtools.symantec.com>
  789.  
  790. bug reports should be sent to
  791.  
  792. <mailto:bugs@devtools.symantec.com>
  793.  
  794. If you want to be notified when a release is made from the Development
  795. Tools Group, send a message to
  796.  
  797. <mailto:listserv@bedford.symantec.com>
  798.  
  799. With the subject line
  800.  
  801. sub macdtg-announce <your real name>
  802.  
  803. - -
  804. Tom Emerson                                              Software Engineer
  805. Development Tools Group                               Symantec Corporation
  806.                           tree@bedford.symantec.com
  807.                 "Reptiles Unite! Down with the Mammalarchy!"
  808.  
  809. ---------------------------
  810.  
  811. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  812. Subject: QuickDraw GX programming on the WWWeb
  813. Date: Tue, 02 May 1995 16:49:19 +1200
  814. Organization: University of Waikato
  815.  
  816. I've put together some World-Wide Web pages that introduce some of the
  817. aspects of programming for QuickDraw GX. You'll find them at
  818.  
  819.     http://www2.waikato.ac.nz/ldo/gx/intro.html
  820.  
  821. Have fun.
  822.  
  823. Lawrence D'Oliveiro                       fone: +64-7-856-2889
  824. Info & Tech Services Division              fax: +64-7-838-4066
  825. University of Waikato            electric mail: ldo@waikato.ac.nz
  826. Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
  827.  
  828. ---------------------------
  829.  
  830. >From jadams@eng.umd.edu (Josh Adams)
  831. Subject: [Ann] TCP++.Lib 1.0 released to macgifts
  832. Date: Fri, 28 Apr 1995 07:10:40 -0400
  833. Organization: University of Maryland College Park
  834.  
  835. I just submitted my TCP++.Lib 1.0 to macgifts@mac.archive.umich.edu.
  836.  
  837. What, you may be asking is the TCP++.lib?
  838.  
  839. Well, it is a library for CodeWarrior that greatly eases the coding of TCP
  840. applications. I used code that I found included in the source for inetd.
  841. It was apparently written by Apple in MPW. 
  842.  
  843. I updated all the code so that it would compile under CodeWarrior. The
  844. source uses some C++. 
  845.  
  846. I include all the source and the CW project I used. There is also an
  847. explanatory README file. 
  848.  
  849. I don't know when it will be available, but I will post again when it is.
  850.  
  851. I would appreciate people trying it out and telling me what they think. I
  852. haven't used it incredibly much myself. In fact, I don't think that it
  853. easily creates a Passive TCP stream...
  854.  
  855. Anyway, good luck...
  856.  
  857. Josh
  858.  
  859. -- 
  860. Josh Adams                       |  Will she trick or treat,
  861. Mail: jadams@eng.umd.edu         |  I bet she will.
  862. Talk: stu@case.dorm.umd.edu      |    - Type O Negative
  863.  
  864. ---------------------------
  865.  
  866. >From kfc@wimsey.com (Ken Cunningham)
  867. Subject: help: making PICT header for JFIF format file
  868. Date: Sun, 30 Apr 1995 09:07:15 -0800
  869. Organization: MD, FRCPC
  870.  
  871. Having looked through Apple's Quicktime documentation, and opened a few
  872. JPEG-compressed PICT and JFIF files, I understand that the two file
  873. formats are virtually identical, except for the 512byte header of zero's
  874. and the about 240byte Quicktime header that is attatched to the start of
  875. the JFIF file to make it a PICT file.
  876.  
  877. I assume the resource would be similar, but without the header of zero's,
  878. as usual.
  879.  
  880. Has anyone put some code together that will look at the JFIF file and
  881. build the correct Quicktime-PICT header?
  882.  
  883. If not that, could someone help me with the JFIF header?
  884.  
  885. Thanks, all...
  886.  
  887. +++++++++++++++++++++++++++
  888.  
  889. >From Kent Sandvik <sandvik@apple.com>
  890. Date: 30 Apr 1995 22:09:03 GMT
  891. Organization: Apple Computer, Inc. Developer Tech. Support
  892.  
  893. In article <kfc-3004950907150001@pme01.bby.wis.net> Ken Cunningham,
  894. kfc@wimsey.com writes:
  895. >>Having looked through Apple's Quicktime documentation, and opened a few
  896. >JPEG-compressed PICT and JFIF files, I understand that the two file
  897. >formats are virtually identical, except for the 512byte header of zero's
  898. >and the about 240byte Quicktime header that is attatched to the start of
  899. >the JFIF file to make it a PICT file.
  900. >
  901. >I assume the resource would be similar, but without the header of zero's,
  902. >as usual.
  903. >
  904. >Has anyone put some code together that will look at the JFIF file and
  905. >build the correct Quicktime-PICT header?
  906. >
  907. >If not that, could someone help me with the JFIF header?
  908.  
  909. Ho! This should be a FAQ. Actually it's a Q&A, part of the new Q&A drive
  910. we are doing, and will be announced at the WWDC.
  911.  
  912. Anyway, JFIF is the container format for distributing JPEG movies from
  913. system to system without worrying about byte ordering, data construct
  914. sizes and so on. 
  915.  
  916. A very common question is now to scan and build an image description from
  917. a JFIF file, and the answer is in the ScanJFIF function that is part of
  918. the Movie Data Exchange QuickTime samples. And those samples should be
  919. available on most online services where we have uploaded sample code, as
  920. well as on the QT 2.0 SDK CD that most QT-professionals should own by now.
  921.  
  922. Cheers, Kent
  923.  
  924. +++++++++++++++++++++++++++
  925.  
  926. >From oster@netcom.com (David Phillip Oster)
  927. Date: Mon, 1 May 1995 04:40:47 GMT
  928. Organization: Netcom Online Communications Services (408-241-9760 login: guest)
  929.  
  930. In article <3o11pv$jaq@apple.com> Kent Sandvik <sandvik@apple.com> writes:
  931. >A very common question is now to scan and build an image description from
  932. >a JFIF file, and the answer is in the ScanJFIF function that is part of
  933. >the Movie Data Exchange QuickTime samples. 
  934.  
  935. Yes, but!
  936.  
  937. At least the version of ScanJFIF on the most recent Developer's CD-ROM
  938. is old, and errors out when handed a JFIF file with version 1.02 or greater.
  939. (It handles only versions 1.00 and 1.02.)
  940.  
  941. Where is the JFIF header documented?
  942.  
  943. What is the current version?
  944. -- 
  945. - ------- <mail-to:oster@netcom.com> ----------
  946. Ahh! The thorazine is wearing off and the odinazine is coming on...
  947.  
  948. +++++++++++++++++++++++++++
  949.  
  950. >From tgl@netcom.com (Tom Lane)
  951. Date: Mon, 1 May 1995 14:10:01 GMT
  952. Organization: Netcom Online Communications Services
  953.  
  954. oster@netcom.com (David Phillip Oster) writes:
  955. > At least the version of ScanJFIF on the most recent Developer's CD-ROM
  956. > is old, and errors out when handed a JFIF file with version 1.02 or greater.
  957. > (It handles only versions 1.00 and 1.02.)
  958.  
  959. I guess you meant it handles only 1.0 and 1.01?  They did the wrong
  960. thing here, because a new minor version is specified to be upward
  961. compatible.  Barfing on an unknown minor number is wrong.
  962.  
  963. > Where is the JFIF header documented?
  964.  
  965. ftp.uu.net:/graphics/jpeg/jfif.ps.gz (there's also a plain text version).
  966.  
  967. > What is the current version?
  968.  
  969. 1.02 is still the current version and is likely to be the last version
  970. ever, because the JPEG committee is more interested in their new "SPIFF"
  971. format.  (SPIFF is compatible with JFIF as long as you don't expect the
  972. JFIF APP0 marker to be there.)
  973.  
  974. Unfortunately, some twit got the high and low version bytes backwards in
  975. the latest release of HiJaak Pro, with the result that files claiming to
  976. be JFIF version 2.01 are starting to appear.  Since a major version
  977. upgrade is specified to mean an incompatible change, it is proper to
  978. reject these files; but depending on how anal-retentive you want to be,
  979. you might prefer to just ignore the JFIF version number entirely.
  980.  
  981.                         regards, tom lane
  982.                         organizer, Independent JPEG Group
  983.  
  984. ---------------------------
  985.  
  986. >From Said Kobeissi <said.kobeissi@together.org>
  987. Subject: lists in dialogs?
  988. Date: 1 May 1995 19:20:40 GMT
  989. Organization: TOGETHER INTERNET SERVICES
  990.  
  991. Hi all,
  992.  
  993.   I am sure this is a common question, so feel free to point me towards 
  994. some source code or sample materials (in C preferably). How does one 
  995. display a list in a dialog?
  996.  
  997. Thank you,
  998.  
  999.   Said
  1000.  
  1001. tai@together.net
  1002.  
  1003.  
  1004.  
  1005. +++++++++++++++++++++++++++
  1006.  
  1007. >From muffinhead@netins.net (MuffinHead)
  1008. Date: 2 May 1995 07:16:17 GMT
  1009. Organization: Armpit Studios VII
  1010.  
  1011. In article <3o3ca8$i5v@bristlecone.together.net>, Said Kobeissi
  1012. <said.kobeissi@together.org> wrote:
  1013.  
  1014. >  I am sure this is a common question, so feel free to point me towards 
  1015. >some source code or sample materials (in C preferably). How does one 
  1016. >display a list in a dialog?
  1017.  
  1018.    Create the list with LNew, add all the stuff to it, create a userItem
  1019. in your dialog with the rect of the list, create a userItemProc for it
  1020. that calls LUpdate so it will draw when you receive update events, and
  1021. handle clicks on the list in your filterProc. Also, stick the ListHandle
  1022. in the dialog's refCon so you can get to it from within the userItemProc
  1023. and other places without having to make it a global. Here's a *very*
  1024. primal example:
  1025.  
  1026. {
  1027.    ListHandle list;
  1028.    Rect box;
  1029.    short i;
  1030.    Handle h;
  1031.    UserItemUPP uiUPP;
  1032.  
  1033.    GetDialogItem(d, yourUserItemNumber, &i, &h, &box);
  1034.    uiUPP = NewUserItemProc(listDrawingUserItem);
  1035.    SetDialogItem(d, yourUserItemNumber, i, (Handle)uiUPP, &box);
  1036.    list = LNew(&box, ...);
  1037.    // Add your columns and rows and the cell data here.
  1038.  
  1039.    do {
  1040.       ModalDialog(blah...);
  1041.    } while(whee...);
  1042.    
  1043.    DisposeRoutineDescriptor(uiUPP);
  1044.    etc...
  1045. }
  1046.  
  1047. pascal void listDrawingUserItem(DialogPtr d, short n)
  1048. {
  1049.    ListHandle list;
  1050.  
  1051.    list = (ListHandle)GetWRefCon(d);
  1052.    LUpdate(d->visRgn, list);
  1053.    // I've found that I need to also draw the list's frame sometimes.
  1054.    // It doesn't seem to update after a balloon erases it:
  1055.    FrameRect(&(**list).rView);
  1056. }
  1057.  
  1058.    Just play around with that. You'll easily figure out the rest.
  1059.  
  1060. Muff                                               Armpit Studios VII
  1061. Drummer, Mac geek                                       Iowa City, IA
  1062. _____________________________________________________________________
  1063. Boy, giraffes are selfish.
  1064.   --Deputy Bernard [P.|Milton|Oliver] Fife
  1065.  
  1066. ---------------------------
  1067.  
  1068. End of C.S.M.P. Digest
  1069. **********************
  1070.